perm filename APP4.XGP[AIM,DBL] blob
sn#126868 filedate 1974-10-30 generic text, type T, neo UTF8
/LMAR=0/FONT#0=NGR20/FONT#1=SIGN57/FONT#2=SHD40/FONT#3=BDI25/FONT#4=GRFX25.FNT[AIM,DBL]/FONT#5=FIX25
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓
I␈↓βDoug Lenat␈↓
␈↓ α,␈↓␈↓↓APPENDIX 4. ␈↓ ␈↓αCF .... PROGRAM␈↓
␈↓ α,␈↓¬This appendix opens a detailed example of PUP6 in operation.
␈↓ α,␈↓¬Fragments of the target concept formation program are exhibited, and
␈↓ α,␈↓¬on page A4.7 is a flowchart for a hand-coded version of CF, the
␈↓ α,␈↓¬target concept formation program discussed earlier. Like PUP6, both
␈↓ α,␈↓¬hand-coded and synthesized versions of CF are written in INTERLISP
␈↓ α,␈↓¬[Teitelman, 197?] with slight additions (setdifference, disk-dump,
␈↓ α,␈↓¬etc.) only. Following each hand-coded piece comes the
␈↓ α,␈↓¬corresponding BEING version created by PUP6. Some functions
␈↓ α,␈↓¬mentioned are system functions used to augment the language (e.g.,
␈↓ α,␈↓¬MATCH.) A few functions have been omitted to aid in readability
␈↓ α,␈↓¬(e.g., VECTOR and TUPLE, which are inverse quote forms of the
␈↓ α,␈↓¬function LIST). The reader should examine the META:CODE sections of
␈↓ α,␈↓¬each BEING; they contain much of the ␈↓βexecutable␈↓¬ code of the BEING.
␈↓ α,␈↓¬The choice of functions, while not a random sample, is not
␈↓ α,␈↓¬intentionally biassed. The opening, top-level functions are shown (by
␈↓ α,␈↓¬hand and by PUP6), and then a very low-level maintenance function
␈↓ α,␈↓¬(delete a feature from the NO relations of a model) is exhibited.
␈↓ α,␈↓¬The next phase of the extended CF example is found in Appendix 5.
␈↓ α,␈↓¬There is a transcript of the dialogue between the user and PUP6 which
␈↓ α,␈↓¬produced this synthesized code. User responses are italicized to ease
␈↓ α,␈↓¬the reading. Notice how the user may interrupt and ask PUP6 for
␈↓ α,␈↓¬clarification.
␈↓ α,␈↓¬The sixth appendix section presents a session with this synthesized
␈↓ α,␈↓¬program itself running. During the exectution of CF, the user stops
␈↓ α,␈↓¬and occasionally asks it questions; the answers are at about the same
␈↓ α,␈↓¬level as those one gets from PUP6 itself during the dialogue.
␈↓ α,␈↓␈↓βThe top-level functions do initialization and repeatedly build up models:␈↓
␈↓ α,␈↓(CF
␈↓ α,␈↓ [LAMBDA NIL
␈↓ α,␈↓ (INITIALIZE:1)
␈↓ α,␈↓ (PARTITION:A:DOMAIN])
␈↓ α,␈↓(INITIALIZE:1
␈↓ α,␈↓ [LAMBDA NIL
␈↓ α,␈↓ (SETQ YES:RELATIONS (QUOTE YES:RELATIONS))
␈↓ α,␈↓ (SETQ NO:RELATIONS (QUOTE NO:RELATIONS))
␈↓ α,␈↓ (SETQ MAYBE:RELATIONS (QUOTE MAYBE:RELATIONS))
␈↓ α,␈↓ (SETQ CLASS:OBJECTS (QUOTE CLASS:OBJECTS))
␈↓ α,␈↓ (SETQ CLASS:NAMES:ORDERING (QUOTE CLASS:NAMES:ORDERING))
␈↓ α,␈↓ (SETQ IN (QUOTE IN))
␈↓ α,␈↓ (SETQ UNTIL (QUOTE UNTIL))
␈↓ α,␈↓ (SETQ CLASS:RELATIONS (QUOTE CLASS:RELATIONS))
␈↓ α,␈↓ (SETQ DO (QUOTE DO))
␈↓ α,␈↓ (SETQ FOR (QUOTE FOR))
␈↓ α,␈↓ (SETQ FROM (QUOTE FROM))
␈↓ α,␈↓ (SETQ TO (QUOTE TO))
␈↓ α,␈↓ (SETQ USING (QUOTE USING))
␈↓ α,␈↓ (SETQ LIST:OF:POSSIBLE:CLASS:NAMES NIL)
␈↓ α,␈↓ (SETQ FILE:NAME (ASK:FOR:2])
␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.1␈↓
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓
I␈↓βDoug Lenat␈↓
␈↓ α,␈↓␈↓βThe BEING version uses a list of initializations to do at LOAD time. Numeric
␈↓ α,␈↓βsuffixes merely indicate some of the new, specialized BEINGs' names.␈↓
␈↓ α,␈↓ (RPAQQ GLOBAL:INITIALIZATION:LIST (
␈↓ α,␈↓ (SETQ TYPE:OF:C:F CLASSIFICATORY:CONCEPT:FORMATION)
␈↓ α,␈↓ (SETQQ HALT HALT)
␈↓ α,␈↓ (SETQQ NAME:OF:CLASS NAME:OF:CLASS)
␈↓ α,␈↓ (SETQQ SET:OF:POSSIBLE:NAMES:OF:CLASS NIL)
␈↓ α,␈↓ (SETQQ ALPHORDER ALPHORDER)
␈↓ α,␈↓ (SETQQ NOTHING NOTHING)
␈↓ α,␈↓ (SETQQ POSSIBLE:NAME:OF:CLASS POSSIBLE:NAME:OF:CLASS)
␈↓ α,␈↓ (SETQQ MAYBE:RELNS:30 MAYBE:RELNS:30)
␈↓ α,␈↓ (SETQQ YES:RELNS:28 YES:RELNS:28)
␈↓ α,␈↓ (SETQQ ELEMENT:RELNS:15 ELEMENT:RELNS:15)
␈↓ α,␈↓ (SETQQ NO:RELNS:29 NO:RELNS:29)
␈↓ α,␈↓ (SETQQ POSSIBLE:NAME:OF:CLASS:OBJECTS:20 POSSIBLE:NAME:OF:CLASS:OBJECTS:20)
␈↓ α,␈↓ (SETQQ ELEMENT:OBJECTS:11 ELEMENT:OBJECTS:11)
␈↓ α,␈↓ (SETQQ CLASS:MAYBE:RELNS:37 CLASS:MAYBE:RELNS:37)
␈↓ α,␈↓ (SETQQ CLASS:NO:RELNS:36 CLASS:NO:RELNS:36)
␈↓ α,␈↓ (SETQQ CLASS:YES:RELNS:35 CLASS:YES:RELNS:35)
␈↓ α,␈↓ (SETQQ CLASS:CLASSNAME:34 CLASS:CLASSNAME:34)
␈↓ α,␈↓ (SETQQ CLASS:OBJECTS:33 CLASS:OBJECTS:33)
␈↓ α,␈↓ (SETQQ ??? ???)))
␈↓ α,␈↓ (PUTPROPS CF:1 IDEN ((( ( (MEMBER LI (QUOTE ((CONCEPT FORMATION)
␈↓ α,␈↓ (CF:1)
␈↓ α,␈↓ (CONCEPT LEARNING)
␈↓ α,␈↓ (FORM CONCEPTS)
␈↓ α,␈↓ (LEARN CONCEPTS)
␈↓ α,␈↓ (LEARNS CONCEPTS)
␈↓ α,␈↓ (FORMS CONCEPTS))))))
␈↓ α,␈↓ ( CF:1)))
␈↓ α,␈↓ EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓ WHAT ( A SPECIALIZED BEING WHICH DOES
␈↓ α,␈↓ ( LEARN HOW TO IMPOSE A CONCEPT STRUCTURING UPON A DOMAIN; LEARN HOW TO
␈↓ α,␈↓ CHARACTERIZE, OR AT LEAST DISTINGUISH, VARIOUS CONCEPTS))
␈↓ α,␈↓ HOW ( BY CHOOSING THE DESIRED TYPE OF CONCEPT FORMATION CALLED FOR, AND THEN CARRYING IT OUT)
␈↓ α,␈↓ WHY ( CONCEPT:LEARNING IS NECESSARY TO CONCEPT KNOWLEDGE AND CONCEPT:FORMATION IS TOO GENERAL TO
␈↓ α,␈↓ USE AS IT IS)
␈↓ α,␈↓ MAIN:EFFECTS ((( ABLE PUP ( LEARN CONCEPTS))
␈↓ α,␈↓ ( CF:1)))
␈↓ α,␈↓ WHEN (((MEMBER TYPE:OF:C:F ABLE:PUP:LIST)
␈↓ α,␈↓ -70
␈↓ α,␈↓ ( BECAUSE IF WE CAN ALREADY DO ( TYPE:OF:C:F)
␈↓ α,␈↓ THEN WE SHOULDNT TRY TO DO IT OVER AGAIN))
␈↓ α,␈↓ ((MEMBER (QUOTE (CHARACTERIZE CLASSES))
␈↓ α,␈↓ PUP:WANTS:LIST)
␈↓ α,␈↓ 88
␈↓ α,␈↓ (QUOTE (BECAUSE CONCEPT FORMATION IS A GOOD WAY TO GET A CHARACTERIZATION OF CLASSES)))
␈↓ α,␈↓ (T (COND (NEW:INFO:LIST -60)
␈↓ α,␈↓ (T 40))
␈↓ α,␈↓ (QUOTE (BECAUSE NEW INFORMATION MIGHT ALTER OUR COURSE OF ACTION))))
␈↓ α,␈↓ ␈↓βMETA:CODE␈↓ (TEMPORARILY (PAD:2))
␈↓ α,␈↓ PRE:REQUISITES (( AWARE USER ( PUP IS ABOUT TO WORK ON CONCEPT FORMATION))
␈↓ α,␈↓ ( AWARE USER ( THE TYPE OF CONCEPT FORMATION PUP IS ABOUT TO WORK ON IS
␈↓ α,␈↓ ( TYPE:OF:C:F))))
␈↓ α,␈↓ POST:REQUISITES (( AWARE USER ( PUP HAS THOUGHT ABOUT THE ( TYPE:OF:C:F)
␈↓ α,␈↓ TYPE OF CONCEPT:FORMATION)))
␈↓ α,␈↓ DEMONS ( INFERENCE:DEMONS ATTENTION:DEMONS)
␈↓ α,␈↓ AFFECTS ()
␈↓ α,␈↓ COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓ GENERALIZATIONS (CONCEPT:FORMATION ATTEND LEARN INDUCTIVE:INFERENCE)
␈↓ α,␈↓ SPECIALIZATIONS NIL
␈↓ α,␈↓ ALTERNATIVES ((GRAMMATICAL:INFERENCE PATTERN:RECOGNITION SIMULATED:EVOLUTION))
␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.2␈↓
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓
I␈↓βDoug Lenat␈↓
␈↓ α,␈↓ BEING T
␈↓ α,␈↓ EXPLICIT:ARGS (DUMMY:ARGUMENT:3 DUMMY:ARGUMENT:2 DUMMY:ARGUMENT:1))
␈↓ α,␈↓␈↓βNotice that both versions' CF functions just call PARTITION:A:DOMAIN␈↓
␈↓ α,␈↓(PARTITION:A:DOMAIN
␈↓ α,␈↓ [LAMBDA NIL
␈↓ α,␈↓ (PROG NIL
␈↓ α,␈↓ START:OF:SERIES
␈↓ α,␈↓ (INPUT:1:ELEMENT)
␈↓ α,␈↓ (COND
␈↓ α,␈↓ ((HAS:NAME)
␈↓ α,␈↓ (INPUT:2:CLASS:NAME))
␈↓ α,␈↓ (T (DETERMINE:1:CLASS:NAME)))
␈↓ α,␈↓ (COND
␈↓ α,␈↓ ((EQUAL CLASS:NAME (QUOTE HALT))
␈↓ α,␈↓ (HALT:1))
␈↓ α,␈↓ (T (PRINT (QUOTE (I NOW KNOW)))
␈↓ α,␈↓ [FOREACH (QUOTE NAME) IN LIST:OF:POSSIBLE:CLASS:NAMES
␈↓ α,␈↓ DO (QUOTE (PROGN (PRINT NAME)
␈↓ α,␈↓ [COND
␈↓ α,␈↓ ((GETP NAME CLASS:OBJECTS)
␈↓ α,␈↓ (PRIN1 (QUOTE "OBJECTS "))
␈↓ α,␈↓ (PRINT (GETP NAME CLASS:OBJECTS]
␈↓ α,␈↓ [COND
␈↓ α,␈↓ ((GETP NAME YES:RELATIONS)
␈↓ α,␈↓ (PRIN1 (QUOTE "MUST HAVE "))
␈↓ α,␈↓ (PRINT (GETP NAME YES:RELATIONS]
␈↓ α,␈↓ [COND
␈↓ α,␈↓ ((GETP NAME NO:RELATIONS)
␈↓ α,␈↓ (PRIN1 (QUOTE "MUSNT HAVE "))
␈↓ α,␈↓ (PRINT (GETP NAME NO:RELATIONS]
␈↓ α,␈↓ (COND
␈↓ α,␈↓ ((GETP NAME MAYBE:RELATIONS)
␈↓ α,␈↓ (PRIN1 (QUOTE "MAY HAVE "))
␈↓ α,␈↓ (PRINT (GETP NAME
␈↓ α,␈↓ MAYBE:RELATIONS]
␈↓ α,␈↓ (GO START:OF:SERIES])
␈↓ α,␈↓␈↓βThe BEING version of PARTITION is quite similar. Notice the use of comments:
␈↓ α,␈↓βthough written by PUP6 for its own use, they are also meaningful to the user.
␈↓ α,␈↓βBelow, ␈↓ELEMENT␈↓β refers to a scene, and ␈↓CLASS␈↓β refers to a concept model.␈↓
␈↓ α,␈↓ (PUTPROPS PAD:2
␈↓ α,␈↓ IDEN ((( ( (MATCH ( PARTITION A DOMAIN)
␈↓ α,␈↓ LI)))
␈↓ α,␈↓ ( PAD:2))
␈↓ α,␈↓ (( ( (MATCH ( DIVIDE A DOMAIN UP)
␈↓ α,␈↓ LI)))
␈↓ α,␈↓ ( PAD:2)))
␈↓ α,␈↓ IMPLICIT:ARGS (PRESULT)
␈↓ α,␈↓ EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓ WHAT ( A SPECIALIZED BEING WHICH DOES
␈↓ α,␈↓ ( DIVIDE A DOMAIN INTO SUBDOMAINS; USUALLY THESE WILL BE DISJOINT, AND THEIR UNION
␈↓ α,␈↓ WILL BE THE ENTIRE DOMAIN))
␈↓ α,␈↓ HOW ( BY BUILDING UP THE PARTITION GRADUALLY, BY ADDING TO OUR KNOWLEDGE OF THE PARTITION ONE
␈↓ α,␈↓ PAIR AT A TIME; HERE A PAIR IS <ELEMENT, CLASS:NAME>)
␈↓ α,␈↓ WHY ( BECAUSE PUP MUST PARTITION A DOMAIN INTO CLASSES, AND
␈↓ α,␈↓ PARTITION:A:DOMAIN IS TOO GENERAL TO USE AS IT IS)
␈↓ α,␈↓ MAIN:EFFECTS ((( PARTITIONED DOMAIN)
␈↓ α,␈↓ ( PAD:2)))
␈↓ α,␈↓ WHEN ((PARTITIONED:DOMAIN:LIST -100 ( BECAUSE WE ALREADY HAVE PARTITIONED DOMAIN))
␈↓ α,␈↓ ((NULL PARTITIONED:DOMAIN:LIST)
␈↓ α,␈↓ 20
␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.3␈↓
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓
I␈↓βDoug Lenat␈↓
␈↓ α,␈↓ ( BECAUSE PUP HAS NOT YET PARTITIONED DOMAIN, SO IT IS PLAUSIBLE TO DO IT NOW)))
␈↓ α,␈↓ ␈↓βMETA:CODE␈↓ (PROG NIL
␈↓ α,␈↓ LABEL:1
␈↓ α,␈↓ (TAKE:HOLD:OF:3 ELEMENT:4)
␈↓ α,␈↓ (COND ((HAS:NAME:5 ELEMENT:4 (COMMENT PARTITION:BY:TAKE:ELE:AND:CLASS))
␈↓ α,␈↓ (TAKE:HOLD:OF:6 NAME:OF:CLASS)
␈↓ α,␈↓ (MODIFY:STRUCTURE:7 NAME:OF:CLASS))
␈↓ α,␈↓ (T (GET:HOLD:OF:8 NAME:OF:CLASS)
␈↓ α,␈↓ (MODIFY:STRUCTURE:9 NAME:OF:CLASS)))
␈↓ α,␈↓ (COND ((IS:OF:TYPE:61 ARG1 (COMMENT BREAKAWAY))
␈↓ α,␈↓ (COMMENT FINALIZATION OF LOOP STARTING AT LABEL:1 MAY GO HERE))
␈↓ α,␈↓ (T (FOREACH NAME IN SET:OF:POSSIBLE:NAMES:OF:CLASS DO
␈↓ α,␈↓ (PROGN (PRINT NAME)
␈↓ α,␈↓ (COND ((GETP NAME CLASS:OBJECTS:33)
␈↓ α,␈↓ (PRIN1 "OBJECTS ")
␈↓ α,␈↓ (PRINT (GETP NAME CLASS:OBJECTS:33))))
␈↓ α,␈↓ (COND ((GETP NAME CLASS:YES:RELNS:35)
␈↓ α,␈↓ (PRIN1 "MUST HAVE ")
␈↓ α,␈↓ (PRINT (GETP NAME CLASS:YES:RELNS:35))))
␈↓ α,␈↓ (COND ((GETP NAME CLASS:NO:RELNS:36)
␈↓ α,␈↓ (PRINT (GETP NAME CLASS:NO:RELNS:36))))
␈↓ α,␈↓ (COND ((GETP NAME CLASS:MAYBE:RELNS:37)
␈↓ α,␈↓ (PRIN1 "MAY HAVE ")
␈↓ α,␈↓ (PRINT (GETP NAME CLASS:MAYBE:RELNS:37))))
␈↓ α,␈↓ (TERPRI)
␈↓ α,␈↓ T))
␈↓ α,␈↓ (GO LABEL:1)))
␈↓ α,␈↓ (COMMENT SEE: THERE IS NO INFINITE LOOP IN THIS PROG AFTER ALL; WE ARE
␈↓ α,␈↓ EXITING IT!))
␈↓ α,␈↓ DEMONS ( FRINGE:OF:CONCIOUSNESS:DEMON)
␈↓ α,␈↓ COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓ GENERALIZATIONS (PARTITION:A:DOMAIN MAP BUILD:FUNCTION)
␈↓ α,␈↓ SPECIALIZATIONS NIL
␈↓ α,␈↓ ALTERNATIVES ( DIVIDE:UP DISCRETIZE)
␈↓ α,␈↓ BEING T
␈↓ α,␈↓ EXPLICIT:ARGS (DUMMY:ARGUMENT:3 DUMMY:ARGUMENT:2 DUMMY:ARGUMENT:1)
␈↓ α,␈↓ AFFECTS ( ( ELEMENT:4 POSSIBLE CALLED)
␈↓ α,␈↓ ( ELEMENT:4 POSSIBLE CALLED)
␈↓ α,␈↓ ( IN POSSIBLE CALLED)))
␈↓ α,␈↓␈↓βHere are the hand versions of INPUT:1:ELEMENT and HAS:NAME␈↓
␈↓ α,␈↓(INPUT:1:ELEMENT
␈↓ α,␈↓ [LAMBDA NIL
␈↓ α,␈↓ (PRINT (QUOTE (I AM READY FOR A SCENE)))
␈↓ α,␈↓ (SETQ ELEMENT (READ))
␈↓ α,␈↓ (SETQ LIST:OF:OBJECTS:OF:ELEMENT (CORRESPONDING:OBJECTS:PART))
␈↓ α,␈↓ (SETQ SET:OF:RELATIONS (CORRESPONDING:RELATIONS:PART))
␈↓ α,␈↓ (SETQ CLASS:NAME (CAR ELEMENT])
␈↓ α,␈↓(HAS:NAME
␈↓ α,␈↓ [LAMBDA NIL
␈↓ α,␈↓ (NOT (EQUAL (CAR ELEMENT)
␈↓ α,␈↓ (QUOTE ?])
␈↓ α,␈↓␈↓βThe PUP6 versions include extra BEINGS, STATIC:SCENE and ELEMENT, which
␈↓ α,␈↓βhave no control function; rather, their role is analogous to a data structure.
␈↓ α,␈↓βPUP6 uses the name TAKE:HOLD:OF:3 instead of INPUT:1:ELEMENT.␈↓
␈↓ α,␈↓ (PUTPROPS STATIC:SCENE:10 IDEN ((( ( (EQUAL LI (LIST STATIC:SCENE:10))))
␈↓ α,␈↓ ( STATIC:SCENE:10)))
␈↓ α,␈↓ ␈↓βMETA:CODE␈↓ (STRUCTURE (OBJECTS SET O)
␈↓ α,␈↓ (CLASS:NAME NAME N)
␈↓ α,␈↓ (STATIC RELATIONS S BETWEEN OBJECTS))
␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.4␈↓
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓
I␈↓βDoug Lenat␈↓
␈↓ α,␈↓ COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓ DATA:STRUCTURE T
␈↓ α,␈↓ BEING T
␈↓ α,␈↓ WHAT ( A SPECIALIZED BEING WHICH DOES NIL)
␈↓ α,␈↓ WHY (SCENE IS TOO GENERAL TO USE AS IT IS)
␈↓ α,␈↓ GENERALIZATIONS (SCENE)
␈↓ α,␈↓ (PUTPROPS ELEMENT:4 IDEN ((( ( (EQUAL ( ELEMENT:4)
␈↓ α,␈↓ LI)))
␈↓ α,␈↓ ( ELEMENT:4)))
␈↓ α,␈↓ EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓ WHAT ( A SPECIALIZED BEING WHICH DOES
␈↓ α,␈↓ ( A STRUCTURE WHICH IS A MEMBER OF A LARGER STRUCTURE))
␈↓ α,␈↓ COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓ DATA:STRUCTURE (ACCESS (((SOME:PART:OF:16 X)
␈↓ α,␈↓ ACCESSES
␈↓ α,␈↓ (STATIC RELATIONS S BETWEEN OBJECTS))
␈↓ α,␈↓ ((SOME:PART:OF:14 X)
␈↓ α,␈↓ ACCESSES
␈↓ α,␈↓ (CLASS:NAME NAME N))
␈↓ α,␈↓ ((SOME:PART:OF:12 X)
␈↓ α,␈↓ ACCESSES
␈↓ α,␈↓ (OBJECTS SET O))))
␈↓ α,␈↓ BEING T
␈↓ α,␈↓ EXPLICIT:ARGS (DUMMY:ARGUMENT:3 DUMMY:ARGUMENT:2 DUMMY:ARGUMENT:1)
␈↓ α,␈↓ WHY (ELEMENT IS TOO GENERAL TO USE AS IT IS)
␈↓ α,␈↓ ␈↓βMETA:CODE␈↓ (STRUCTURE (OBJECTS SET ELEMENT:OBJECTS:11)
␈↓ α,␈↓ (CLASS:NAME NAME ELEMENT:CLASSNAME:13)
␈↓ α,␈↓ (STATIC RELATIONS ELEMENT:RELNS:15 BETWEEN OBJECTS))
␈↓ α,␈↓ GENERALIZATIONS (ELEMENT)
␈↓ α,␈↓ (PUTPROPS HAS:NAME:5 EXPLICIT:ARGS (ARG1 DUMMY:ARGUMENT:2 DUMMY:ARGUMENT:1)
␈↓ α,␈↓ EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓ WHAT ( A SPECIALIZED BEING WHICH DOES ( SEE IF ( ARG1)
␈↓ α,␈↓ IS OF THE TYPE SPECIFIED. THE PARTICULAR TYPE
␈↓ α,␈↓ IS DELINEATED BY THE SPECIAL KNOWLEDGE
␈↓ α,␈↓ ( DUMMY:ARGUMENT:2)))
␈↓ α,␈↓ HOW ( USE ( DUMMY:ARGUMENT:2)
␈↓ α,␈↓ DETAILS TO SEE IF IT CONTAINS ( ARG1))
␈↓ α,␈↓ WHY ( WE MUST BE ABLE TO TEST AN ARG1 ( ARG1)
␈↓ α,␈↓ AND SEE IF IT BELONGS TO THE TYPE ( DUMMY:ARGUMENT:2)
␈↓ α,␈↓ AND IS:OF:TYPE IS TOO GENERAL TO USE AS IT IS)
␈↓ α,␈↓ ␈↓βMETA:CODE␈↓ (PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS ELEMENT:4)
␈↓ α,␈↓ (NOT (EQUAL (CAR ARG1)
␈↓ α,␈↓ ???)))
␈↓ α,␈↓ COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓ SPECIALIZATIONS NIL
␈↓ α,␈↓ PREDICATE T
␈↓ α,␈↓ BEING T
␈↓ α,␈↓ GENERALIZATIONS (IS:OF:TYPE)
␈↓ α,␈↓ AFFECTS ( ( IN POSSIBLE CALLED)
␈↓ α,␈↓ ( ELEMENT:4 POSSIBLE CALLED)))
␈↓ α,␈↓ (PUTPROPS TAKE:HOLD:OF:3 EXPLICIT:ARGS (ARG1)
␈↓ α,␈↓ EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓ NLAMBDA T
␈↓ α,␈↓ WHAT ( A SPECIALIZED BEING WHICH DOES ( TAKE THE ARG1 ( ARG1)
␈↓ α,␈↓ IN A TRIVIAL WAY; EITHER BY ACCESSING IT
␈↓ α,␈↓ OR BY READING IT IN))
␈↓ α,␈↓ HOW ( LOOK AROUND A LITTLE; IF IT ISNT FOUND TRIVIALLY, THEN ASK THE USER TO GIVE
␈↓ α,␈↓ ( ARG1)
␈↓ α,␈↓ TO US)
␈↓ α,␈↓ WHY ( PUP WANTS ( ARG1)
␈↓ α,␈↓ ,AND WE DON'T HAVE TO DO ANY COMPUTING TO GET IT AND TAKE:HOLD:OF IS TOO GENERAL
␈↓ α,␈↓ TO USE AS IT IS)
␈↓ α,␈↓ COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓ BEING T
␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.5␈↓
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓
I␈↓βDoug Lenat␈↓
␈↓ α,␈↓ ␈↓βMETA:CODE␈↓ (PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS ELEMENT:4)
␈↓ α,␈↓ (PROGN (PRINT (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4))
␈↓ α,␈↓ (SET ARG1 (READ))
␈↓ α,␈↓ (SETQ ELEMENT:OBJECTS:11 (SOME:PART:OF:12 (EVAL ARG1)))
␈↓ α,␈↓ (SETQ ELEMENT:CLASSNAME:13 (SOME:PART:OF:14 (EVAL ARG1)))
␈↓ α,␈↓ (SETQ ELEMENT:RELNS:15 (SOME:PART:OF:16 (EVAL ARG1)))
␈↓ α,␈↓ T))
␈↓ α,␈↓ GENERALIZATIONS (TAKE:HOLD:OF)
␈↓ α,␈↓ AFFECTS (
␈↓ α,␈↓ ( ELEMENT:4 POSSIBLE CALLED)
␈↓ α,␈↓ ( ELEMENT:OBJECTS:11 POSSIBLE CALLED)
␈↓ α,␈↓ ( ELEMENT:CLASSNAME:13 POSSIBLE CALLED)
␈↓ α,␈↓ ( ELEMENT:RELNS:15 POSSIBLE CALLED)))
␈↓ α,␈↓␈↓βThe following is a very low-level function found in the hand-coded version,
␈↓ α,␈↓βwhich must insert a key contradictory feature into a model's set of NO relations.␈↓
␈↓ α,␈↓(DELETE:1:3:1
␈↓ α,␈↓ [LAMBDA NIL
␈↓ α,␈↓ (PROG (TEMPORARY:NO:RELATIONS)
␈↓ α,␈↓ (SETQ TEMPORARY:NO:RELATIONS (GETP CLASS:NAME NO:RELATIONS))
␈↓ α,␈↓ (SETQ TEMPORARY:NO:RELATIONS (PULLOUT RELATION
␈↓ α,␈↓ TEMPORARY:NO:RELATIONS))
␈↓ α,␈↓ (PUT CLASS:NAME NO:RELATIONS TEMPORARY:NO:RELATIONS])
␈↓ α,␈↓␈↓βThe version PUP6 writes includes the test as well: there must be
␈↓ α,␈↓βsome feature in the current NO relations set which is also present
␈↓ α,␈↓βin the scene (that is, located on the list ELEMENT:RELNS:15).␈↓
␈↓ α,␈↓ (PUTPROPS CONDITIONAL:DELETION:54 IDEN ((( ( ( ( ( (EQUAL (CAR LI)
␈↓ α,␈↓ (QUOTE DELETE)))))))
␈↓ α,␈↓ ( CONDITIONAL:DELETION:54 (TRANSLATE (IN (CDR LI))
␈↓ α,␈↓ T))))
␈↓ α,␈↓ EXPLICIT:ARGS (DUMMY:ARGUMENT:2 DUMMY:ARGUMENT:1)
␈↓ α,␈↓ EXPLICIT:ARGS:CHECK T
␈↓ α,␈↓ WHAT ( A SPECIALIZED BEING WHICH DOES
␈↓ α,␈↓ ( PERHAPS WE WILL REMOVE AN ELEMENT FROM CLASS:NO:RELNS:29 ,
␈↓ α,␈↓ SOMETHING IN BOTH ELEMENT:RELNS:15
␈↓ α,␈↓ AND ALREADY ON THE CLASS:NO:RELNS:29 LIST
␈↓ α,␈↓ IF SUCH AN ENTITY CAN BE FOUND))
␈↓ α,␈↓ HOW ( WE WILL SEARCH FOR SUCH AN ELEMENT, AND USE PULLOUT)
␈↓ α,␈↓ WHY ( IT WOULD BE CONTRADICTORY FOR SUCH AN ELEMENT TO REMAIN ON THIS LIST
␈↓ α,␈↓ IF IT IS ON THE LIST AND ALSO ON THE ELEMENT:RELNS:15 LIST AT THE SAME
␈↓ α,␈↓ TIME. WE HAD TO SPECIALIZE TO THE CONDITIONAL:DELETION BEING BECAUSE
␈↓ α,␈↓ CONDITIONAL:DELETION IS TOO GENERAL TO USE AS IT IS)
␈↓ α,␈↓ ␈↓βMETA:CODE␈↓ (PROGN (SETQ RESULT:6 (SETINTERSECTION (GETP NAME:OF:CLASS
␈↓ α,␈↓ CLASS:NO:RELNS:36)
␈↓ α,␈↓ ELEMENT:RELNS:15))
␈↓ α,␈↓ (COND (RESULT:6 (PUT NAME:OF:CLASS CLASS:NO:RELNS:36
␈↓ α,␈↓ (PULLOUT RESULT:6 (GETP NAME:OF:CLASS
␈↓ α,␈↓ CLASS:NO:RELNS:36))))
␈↓ α,␈↓ (T (SETQ RESULT:6 NIL))))
␈↓ α,␈↓ COMPLEXITY: (.8 .8 .8 .8 .1)
␈↓ α,␈↓ GENERALIZATIONS (CONDITIONAL:DELETION MODIFY:STRUCTURE)
␈↓ α,␈↓ BEING T
␈↓ α,␈↓ AFFECTS ( ( ELEMENT:RELNS:15 POSSIBLE CALLED)))
␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.6␈↓
⊂CF Program excerpts
␈↓ α,␈↓␈↓αBEINGS␈↓␈↓
I␈↓βDoug Lenat␈↓
␈↓ α,␈↓∧␈↓βFLOW CHART OF TARGET PROGRAM (CF), INCLUDING NAMES OF MAJOR FUNCTIONS␈↓∧
␈↓ α,␈↓∧⊂αααα⊃ ⊂ααααααααααααααααααααααα⊃
␈↓ α,␈↓∧~ CF εααααα→λ (INITIALIZE:1) ~
␈↓ α,␈↓∧%αααα$ %ααααααααααπαααααααααααα$
␈↓ α,␈↓∧ ~
␈↓ α,␈↓∧ ~ enter the PARTITION:A:DOMAIN loop
␈↓ α,␈↓∧ ~
␈↓ α,␈↓∧ ⊂α⊃ ⊂αααααααααα↓αααααααααααα⊃
␈↓ α,␈↓∧ ~1εααα→λ Accept the description~
␈↓ α,␈↓∧ %α$ ~ of a scene ~ ⊂α⊃
␈↓ α,␈↓∧⊂αααααααααα→λ (INPUT:1:ELEMENT) ~ ~2~
␈↓ α,␈↓∧~ %ααααααααααπαααααααααααα$ %π$
␈↓ α,␈↓∧~ ~ ~
␈↓ α,␈↓∧~ ~ ~
␈↓ α,␈↓∧~ ⊂αααααααααα↓αααααααααααα⊃ ⊂αααααααααα↓αααααααααααα⊃
␈↓ α,␈↓∧~ ~ Does the scene have a ~ YES ~ Has the scene been ~ YES
␈↓ α,␈↓∧~ ~ name? εαααα→λ previously described? εααααα⊃
␈↓ α,␈↓∧~ ~ (HAS:NAME) ~ ⊂α→λ(CHECKαFORαOLDαNAME) ~ ↓
␈↓ α,␈↓∧~ %ααααααααααπαααααααααααα$ ↑ %ααααααααααπαααααααααααα$ ~
␈↓ α,␈↓∧~ ~NO ~ ~NO ~
␈↓ α,␈↓∧~ ~ ~ ~ ~
␈↓ α,␈↓∧~ ~ ~ ⊂αααααααααα↓αααααααααααα⊃ ~
␈↓ α,␈↓∧~ ~ ~ ~ Insert the description~ ~
␈↓ α,␈↓∧~ ~ (NOαGUESS)~ ~ of the scene in the ~ ~
␈↓ α,␈↓∧~ ~ AND SCENE~ ~ object list ~ ~
␈↓ α,␈↓∧~ ~ DEFINED ~ ~ (NEWαNAME) ~ ~
␈↓ α,␈↓∧~ ~ ⊂αααα$ %ααααααααααπαααααααααααα$ ~
␈↓ α,␈↓∧~ ~ ~ ~ ~
␈↓ α,␈↓∧~ ~ ~ ~ ~
␈↓ α,␈↓∧~(NOαGUESS) ⊂αααααααααα↓αααααααααα↑α⊃ ⊂↓⊃ ~
␈↓ α,␈↓∧~AND SCENE ~ Make a guess at what ~ GUESS ~1~ ~
␈↓ α,␈↓∧~UNDEFINED ~the object is, based on~ CORRECTLY %↑$ ~
␈↓ α,␈↓∧~←ααααααααααλ previous scenes ε→αααααααα⊃ ~ ~
␈↓ α,␈↓∧~ ~ (DETERMINE:CLASSNAME) ~ ~ ~ ~
␈↓ α,␈↓∧~ %ααααααααααααααααααααααα$ ⊂αα↓αααααα↑ααααααααααααα⊃ ~
␈↓ α,␈↓∧~ ~MADE WRONG ~ Correlate this scene ~ ~
␈↓ α,␈↓∧~ ~GUESS ~ with other scenes ~←ααα$
␈↓ α,␈↓∧~ ⊂αααααααααα↓αααααααααααα⊃ ~(PATCHαOLDαDESCRIPTION)~
␈↓ α,␈↓∧~SCENE ~ Put in MUSTs and ~ %ααααααααααααααααααααααα$
␈↓ α,␈↓∧~UNDEFINED ~ MUSTNOTs on scene ~ ⊂α⊃
␈↓ α,␈↓∧%αααααααααα←λ differences εαα→λ2~
␈↓ α,␈↓∧ ~ (TIGHTENαCONSTRAINTS) ~ %α$
␈↓ α,␈↓∧ %ααααααααααααααααααααααα$
␈↓ α,␈↓Fourth Draft .... October 30, 1974␈α?␈α?␈α?␈α?␈α≤page A4.7␈↓
⊂CF Program excerpts